package entidades.DAOs;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import logicaDeNegocio.GestionDeFechas;

import utilidades.ConexionBD;
import entidades.Fecha;
import entidades.Formacion;
import entidades.Jugador;
import entidades.Puesto;
import entidades.PuntajeDelJugador;
import entidades.DTOs.DTOFormacion;

public class DAOformaciones {
	
	public static void addFormacion(DTOFormacion formacion) throws SQLException, ClassNotFoundException{

		ConexionBD.conectar();
        Statement sentencia=ConexionBD.conexion.createStatement();
        
        String sentenciaEjecutar = "INSERT INTO formacion (id_form, id_equipo, id_fecha, puntaje) \n"
        				+ "VALUES ("+formacion.getId_form()+", "+formacion.getId_equipo()+","+formacion.getId_fecha()+","+0+");";
        
        sentencia.executeUpdate(sentenciaEjecutar);
        ConexionBD.desconectar();
	}
	
	public static void addTitular(int id_jugador, int id_formacion) throws SQLException, ClassNotFoundException{

		ConexionBD.conectar();
        Statement sentencia=ConexionBD.conexion.createStatement();
        
        String sentenciaEjecutar = "INSERT INTO titulares (id_jugador, id_form) \n"
        				+ "VALUES ("+id_jugador+","+id_formacion+");";
        
        sentencia.executeUpdate(sentenciaEjecutar);
        ConexionBD.desconectar();	
	}
	
	public static void addSuplente(int id_jugador, int id_formacion) throws SQLException, ClassNotFoundException{

		ConexionBD.conectar();
        Statement sentencia=ConexionBD.conexion.createStatement();
        
        String sentenciaEjecutar = "INSERT INTO suplentes (id_jugador, id_form) \n"
        				+ "VALUES ("+id_jugador+","+id_formacion+");";
        
        sentencia.executeUpdate(sentenciaEjecutar);
        ConexionBD.desconectar();	
	}
	
	public static ArrayList <DTOFormacion> selectFormaciones(int id_fecha) throws SQLException, ClassNotFoundException{
        
        ConexionBD.conectar();
        Statement sentencia=ConexionBD.conexion.createStatement();
        
        String sentenciaEjecutar = "SELECT id_form, id_equipo, id_fecha, puntaje \n"
        				+ "FROM formacion \n"
                        + "WHERE "+id_fecha+" = id_fecha;";
        
        ResultSet resultadoConsulta=sentencia.executeQuery(sentenciaEjecutar);
        
        ArrayList <DTOFormacion> listaFormaciones = new ArrayList <DTOFormacion>();
        
        while(resultadoConsulta.next()){
                DTOFormacion filaFormacion = new DTOFormacion();
                filaFormacion.setId_form (resultadoConsulta.getInt(1)) ;
                filaFormacion.setId_equipo(resultadoConsulta.getInt(2));
                filaFormacion.setId_fecha(resultadoConsulta.getInt(3));
                filaFormacion.setPuntaje(resultadoConsulta.getInt(4));
            
                
                listaFormaciones.add(filaFormacion);
                
        }
        
        ConexionBD.desconectar();

        return listaFormaciones;
                
	}
	
	public static Formacion getFormacion(int id_equipo, Fecha fecha) throws SQLException, ClassNotFoundException{
		
		ConexionBD.conectar();
		Statement sql=ConexionBD.conectar().createStatement();
		ResultSet rsFormacion=sql.executeQuery("SELECT * FROM formacion WHERE id_equipo ="+id_equipo+" AND id_fecha = "+fecha.getId_fecha()+";");
		if(rsFormacion.getRow()<1){
			rsFormacion.next();
		}
		Formacion formacion = new Formacion();
		formacion.setId_form(rsFormacion.getInt("id_form"));
		formacion.setFecha(fecha);
		 ConexionBD.desconectar();
		return formacion;
	}

	public static void guardarFormacion(Formacion nuevaFormacion)throws SQLException, ClassNotFoundException {
		ConexionBD.conectar();
		Statement sql = ConexionBD.conexion.createStatement();
		sql.executeUpdate("INSERT INTO formacion " +
											"(id_equipo, id_form, id_fecha)" +
											"VALUES("+nuevaFormacion.getId_equipo()+","+nuevaFormacion.getId_form()+","+nuevaFormacion.getFecha().getId_fecha()+");");
		ConexionBD.desconectar();
		
	}

	public static void guardarJugadores(int id_form, ArrayList<Jugador> titulares, ArrayList<Jugador> suplentes) throws SQLException, ClassNotFoundException {
		// TODO Auto-generated method stub
		ConexionBD.conectar();
		for(int i=0;i<titulares.size();i++){
			Statement sql = ConexionBD.conexion.createStatement();
			sql.executeUpdate("INSERT INTO titulares " +
												"(id_jugador, id_form)" +
												"VALUES("+titulares.get(i).getId_jugador()+","+id_form+");");
		}
		for(int i=0;i<suplentes.size();i++){
			Statement sql = ConexionBD.conexion.createStatement();
			sql.executeUpdate("INSERT INTO suplentes " +
												"(id_jugador, id_form)" +
												"VALUES("+suplentes.get(i).getId_jugador()+","+id_form+");");
		}
		ConexionBD.desconectar();
	}

}
